package com.authine.cloudpivot.ext.dto.model.invoice;

import com.authine.mvp.app.launcher.domain.AttachmentFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import lombok.experimental.SuperBuilder;

import java.util.Date;
import java.util.List;


@Data
@SuperBuilder
@NoArgsConstructor
@Accessors(chain = true)
@ApiModel("开票Model")
public class MakeInvoice {

    private static final long serialVersionUID = -8769811550287500626L;

    private String id;

    /**
     * 票面开票人
     */
    @Schema(description = "开票人", required = true)
    @ApiModelProperty(value = "开票人", required = true)
    private String drawer;

    /**
     * 票面 开票日期
     */
    @ApiModelProperty(value = "票面 开票日期", required = true)
    @Schema(description = "票面 开票日期")
    private Date date;

    /**
     * 票面 销售方名称（抬头）
     */
    @ApiModelProperty("票面 销售方名称（抬头）")
    @Schema(description = "票面 销售方名称（抬头）")
    private String sale_name;
    /**
     * 票面 销售方纳税人识别号
     */
    @ApiModelProperty("票面 销售方纳税人识别号")
    @Schema(description = "票面 销售方纳税人识别号")
    private String sale_number;
    /**
     * 票面 销售方地址
     */
    @ApiModelProperty("票面 销售方地址")
    @Schema(description = "票面 销售方地址")
    private String sale_address;
    /**
     * 票面 销售方电话
     */
    @ApiModelProperty("票面 销售方电话")
    @Schema(description = "票面 销售方电话")
    private String sale_phone;
    /**
     * 票面 销售方开户行
     */
    @ApiModelProperty("票面 销售方开户行")
    @Schema(description = "票面 销售方开户行")
    private String sale_bank;
    /**
     * 票面 销售方账号
     */
    @ApiModelProperty("票面 销售方账号")
    @Schema(description = "票面 销售方账号")
    private String sale_account;
    /**
     * 订单类型
     */
    @ApiModelProperty("订单类型")
    @Schema(description = "订单类型")
    private String orderType;
    /**
     * 发票附件地址
     */
    @ApiModelProperty("发票附件地址")
    @Schema(description = "发票附件地址")
    private List<AttachmentFormat> attachmentsJson;

    /**
     * 发票申请单确认开票的人ID
     */
    @ApiModelProperty("发票申请单确认开票的人ID")
    @Schema(description = "发票申请单确认开票的人ID")
    private String drawer_member_id;

    /**
     * 发票申请单确认开票的人全名
     */
    @ApiModelProperty("确认开票的人全名")
    @Schema(description = "发票申请单确认开票的人全名")
    private String drawer_member_name;

    /**
     * 发票记录表
     */
    @ApiModelProperty(value = "开票记录", required = true)
    @Schema(description = "")
    private List<InvoiceRecord> invoiceApplyRecordList;
}
